package br.com.salao.model;

import java.util.List;

import javax.persistence.EntityManager;

import br.com.salao.bean.Estabelecimento;
import br.com.salao.bean.Login;
import br.com.salao.dao.EstabelecimentoDao;
import br.com.salao.dao.EstabelecimentoDaoImpl;
import br.com.salao.util.JpaUtil;
import br.com.salao.util.Utils;

public class EstabelecimentoModel {
	
	private EntityManager em;
	//Logger logger = Logger.getLogger(EstabelecimentoModel.class.getName());
	
	public EstabelecimentoModel(){
		em = JpaUtil.getEntityManager();
	}
		
	public Estabelecimento inserir(Estabelecimento estabelecimento) throws Exception{
	
		EstabelecimentoDao dao = new EstabelecimentoDaoImpl(em);
		
		try{
			return dao.inserir(estabelecimento);
		}catch (Exception e) {
			
			StringBuffer sb = new StringBuffer();
			sb.append(e.getStackTrace() + "\n");
			sb.append(e.getCause() + "\n");
			sb.append(e.getMessage() + "\n");
			//logger.error(sb.toString());
			
			return null;			
		}
	}
	
	public Estabelecimento formatarCampos(Estabelecimento estabelecimento) throws Exception{		
	
		estabelecimento.getEndereco().setLogradouro(Utils.removeAcentosTexto(estabelecimento.getEndereco().getLogradouro().trim().toUpperCase()));
		estabelecimento.setRazaoSocial(estabelecimento.getRazaoSocial().trim().toUpperCase());

		return estabelecimento;
	}
	
	public boolean isCampoNulo(Estabelecimento estabelecimento){
		
		
		if(estabelecimento.getEndereco().getLogradouro() == null ||
				estabelecimento.getEndereco().getBairro().getDescricao() == null ||
				estabelecimento.getEndereco().getBairro().getCidade().getNome() == null){
			
			return true;
		}
		
		return false;
	}
			
	public List<Estabelecimento> buscarEstabelecimentosPorUsuario(Login login){
		EstabelecimentoDao dao = new EstabelecimentoDaoImpl(em);
		return dao.buscarEstabelecimentosPorUsuario(login);
	}
	
	public Estabelecimento buscarEstabelecimentoPorId(int idEstabelecimento){
		EstabelecimentoDao dao = new EstabelecimentoDaoImpl(em);
		return dao.buscarEstabelecimentosPorId(idEstabelecimento);
	}
	
	public List<Estabelecimento> buscarEstabelecimentoPorCidade(int idCidade){
		EstabelecimentoDao dao = new EstabelecimentoDaoImpl(em);
		return dao.buscarEstabelecimentoPorCidade(idCidade);
	}
	
	public List<Estabelecimento> buscarEstabelecimentoPorBairro(int idBairro){
		EstabelecimentoDao dao = new EstabelecimentoDaoImpl(em);
		return dao.buscarEstabelecimentoPorBairro(idBairro);
	}
	

}
